package ansible

//
//import (
//	"fmt"
//	"golang.org/x/crypto/ssh"
//	"io/ioutil"
//	"log"
//	"net"
//)
//
//func ErrHandler(err error, msg string) {
//	if err != nil {
//		log.Fatalf("%s error: %v", msg, err)
//	}
//}
//
//func GetSshConfigByPassword(user string, passwrod string) *ssh.ClientConfig {
//	sshConfig := &ssh.ClientConfig{
//		User: user,
//		Auth: []ssh.AuthMethod{
//			ssh.Password(passwrod),
//		},
//		HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
//			return nil
//		},
//	}
//	return sshConfig
//}
//
//func GetSshConfigByPrivateKeyFile(user string, keyPath string) (*ssh.ClientConfig, error) {
//	cert, err := PublicKeyFile(keyPath)
//	if err != nil {
//		return nil, err
//	}
//
//	sshConfig := &ssh.ClientConfig{
//		User: user,
//		Auth: []ssh.AuthMethod{
//			cert,
//		},
//	}
//	return sshConfig, nil
//}
//
//func PublicKeyFile(file string) (ssh.AuthMethod, error) {
//	buffer, err := ioutil.ReadFile(file)
//	if err != nil {
//		return nil, err
//	}
//
//	key, err := ssh.ParsePrivateKey(buffer)
//	if err != nil {
//		return nil, err
//	}
//	return ssh.PublicKeys(key), nil
//}
//
////通过ssh.ClientConfig创建一个ssh连接
//func GetSshClient(host string, port int, sshConfig *ssh.ClientConfig) (*ssh.Client, error) {
//	addr := fmt.Sprintf("%s:%d", host, port)
//	fmt.Println(addr)
//	client, err := ssh.Dial("tcp", addr, sshConfig)
//	if err != nil {
//		return nil, fmt.Errorf("Failed to dial:%s", err)
//	} else if client == nil {
//		panic("get client client failure")
//	}
//	return client, nil
//}
//
//func ExecCmd(client *ssh.Client, cmd string) ([]byte, error) {
//	session, err := client.NewSession()
//	defer session.Close()
//	if err != nil {
//		return nil, fmt.Errorf("Failed to create session: %s", err)
//	}
//
//	out, err := session.CombinedOutput(cmd)
//	if err != nil {
//		return nil, fmt.Errorf("cmd fail")
//	}
//	return out, err
//}
